↳ Prolog
↳ PrologToPiTRSProof
int_in_gga(0, 0, .(0, [])) → int_out_gga(0, 0, .(0, []))
int_in_gga(0, s(Y), .(0, XS)) → U2_gga(Y, XS, int_in_gga(s(0), s(Y), XS))
int_in_gga(s(X), 0, []) → int_out_gga(s(X), 0, [])
int_in_gga(s(X), s(Y), XS) → U3_gga(X, Y, XS, int_in_gga(X, Y, ZS))
U3_gga(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_gga(X, Y, XS, intlist_in_ga(ZS, XS))
intlist_in_ga([], []) → intlist_out_ga([], [])
intlist_in_ga(.(X, XS), .(s(X), YS)) → U1_ga(X, XS, YS, intlist_in_ga(XS, YS))
U1_ga(X, XS, YS, intlist_out_ga(XS, YS)) → intlist_out_ga(.(X, XS), .(s(X), YS))
U4_gga(X, Y, XS, intlist_out_ga(ZS, XS)) → int_out_gga(s(X), s(Y), XS)
U2_gga(Y, XS, int_out_gga(s(0), s(Y), XS)) → int_out_gga(0, s(Y), .(0, XS))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
int_in_gga(0, 0, .(0, [])) → int_out_gga(0, 0, .(0, []))
int_in_gga(0, s(Y), .(0, XS)) → U2_gga(Y, XS, int_in_gga(s(0), s(Y), XS))
int_in_gga(s(X), 0, []) → int_out_gga(s(X), 0, [])
int_in_gga(s(X), s(Y), XS) → U3_gga(X, Y, XS, int_in_gga(X, Y, ZS))
U3_gga(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_gga(X, Y, XS, intlist_in_ga(ZS, XS))
intlist_in_ga([], []) → intlist_out_ga([], [])
intlist_in_ga(.(X, XS), .(s(X), YS)) → U1_ga(X, XS, YS, intlist_in_ga(XS, YS))
U1_ga(X, XS, YS, intlist_out_ga(XS, YS)) → intlist_out_ga(.(X, XS), .(s(X), YS))
U4_gga(X, Y, XS, intlist_out_ga(ZS, XS)) → int_out_gga(s(X), s(Y), XS)
U2_gga(Y, XS, int_out_gga(s(0), s(Y), XS)) → int_out_gga(0, s(Y), .(0, XS))
INT_IN_GGA(0, s(Y), .(0, XS)) → U2_GGA(Y, XS, int_in_gga(s(0), s(Y), XS))
INT_IN_GGA(0, s(Y), .(0, XS)) → INT_IN_GGA(s(0), s(Y), XS)
INT_IN_GGA(s(X), s(Y), XS) → U3_GGA(X, Y, XS, int_in_gga(X, Y, ZS))
INT_IN_GGA(s(X), s(Y), XS) → INT_IN_GGA(X, Y, ZS)
U3_GGA(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_GGA(X, Y, XS, intlist_in_ga(ZS, XS))
U3_GGA(X, Y, XS, int_out_gga(X, Y, ZS)) → INTLIST_IN_GA(ZS, XS)
INTLIST_IN_GA(.(X, XS), .(s(X), YS)) → U1_GA(X, XS, YS, intlist_in_ga(XS, YS))
INTLIST_IN_GA(.(X, XS), .(s(X), YS)) → INTLIST_IN_GA(XS, YS)
int_in_gga(0, 0, .(0, [])) → int_out_gga(0, 0, .(0, []))
int_in_gga(0, s(Y), .(0, XS)) → U2_gga(Y, XS, int_in_gga(s(0), s(Y), XS))
int_in_gga(s(X), 0, []) → int_out_gga(s(X), 0, [])
int_in_gga(s(X), s(Y), XS) → U3_gga(X, Y, XS, int_in_gga(X, Y, ZS))
U3_gga(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_gga(X, Y, XS, intlist_in_ga(ZS, XS))
intlist_in_ga([], []) → intlist_out_ga([], [])
intlist_in_ga(.(X, XS), .(s(X), YS)) → U1_ga(X, XS, YS, intlist_in_ga(XS, YS))
U1_ga(X, XS, YS, intlist_out_ga(XS, YS)) → intlist_out_ga(.(X, XS), .(s(X), YS))
U4_gga(X, Y, XS, intlist_out_ga(ZS, XS)) → int_out_gga(s(X), s(Y), XS)
U2_gga(Y, XS, int_out_gga(s(0), s(Y), XS)) → int_out_gga(0, s(Y), .(0, XS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
INT_IN_GGA(0, s(Y), .(0, XS)) → U2_GGA(Y, XS, int_in_gga(s(0), s(Y), XS))
INT_IN_GGA(0, s(Y), .(0, XS)) → INT_IN_GGA(s(0), s(Y), XS)
INT_IN_GGA(s(X), s(Y), XS) → U3_GGA(X, Y, XS, int_in_gga(X, Y, ZS))
INT_IN_GGA(s(X), s(Y), XS) → INT_IN_GGA(X, Y, ZS)
U3_GGA(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_GGA(X, Y, XS, intlist_in_ga(ZS, XS))
U3_GGA(X, Y, XS, int_out_gga(X, Y, ZS)) → INTLIST_IN_GA(ZS, XS)
INTLIST_IN_GA(.(X, XS), .(s(X), YS)) → U1_GA(X, XS, YS, intlist_in_ga(XS, YS))
INTLIST_IN_GA(.(X, XS), .(s(X), YS)) → INTLIST_IN_GA(XS, YS)
int_in_gga(0, 0, .(0, [])) → int_out_gga(0, 0, .(0, []))
int_in_gga(0, s(Y), .(0, XS)) → U2_gga(Y, XS, int_in_gga(s(0), s(Y), XS))
int_in_gga(s(X), 0, []) → int_out_gga(s(X), 0, [])
int_in_gga(s(X), s(Y), XS) → U3_gga(X, Y, XS, int_in_gga(X, Y, ZS))
U3_gga(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_gga(X, Y, XS, intlist_in_ga(ZS, XS))
intlist_in_ga([], []) → intlist_out_ga([], [])
intlist_in_ga(.(X, XS), .(s(X), YS)) → U1_ga(X, XS, YS, intlist_in_ga(XS, YS))
U1_ga(X, XS, YS, intlist_out_ga(XS, YS)) → intlist_out_ga(.(X, XS), .(s(X), YS))
U4_gga(X, Y, XS, intlist_out_ga(ZS, XS)) → int_out_gga(s(X), s(Y), XS)
U2_gga(Y, XS, int_out_gga(s(0), s(Y), XS)) → int_out_gga(0, s(Y), .(0, XS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
INTLIST_IN_GA(.(X, XS), .(s(X), YS)) → INTLIST_IN_GA(XS, YS)
int_in_gga(0, 0, .(0, [])) → int_out_gga(0, 0, .(0, []))
int_in_gga(0, s(Y), .(0, XS)) → U2_gga(Y, XS, int_in_gga(s(0), s(Y), XS))
int_in_gga(s(X), 0, []) → int_out_gga(s(X), 0, [])
int_in_gga(s(X), s(Y), XS) → U3_gga(X, Y, XS, int_in_gga(X, Y, ZS))
U3_gga(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_gga(X, Y, XS, intlist_in_ga(ZS, XS))
intlist_in_ga([], []) → intlist_out_ga([], [])
intlist_in_ga(.(X, XS), .(s(X), YS)) → U1_ga(X, XS, YS, intlist_in_ga(XS, YS))
U1_ga(X, XS, YS, intlist_out_ga(XS, YS)) → intlist_out_ga(.(X, XS), .(s(X), YS))
U4_gga(X, Y, XS, intlist_out_ga(ZS, XS)) → int_out_gga(s(X), s(Y), XS)
U2_gga(Y, XS, int_out_gga(s(0), s(Y), XS)) → int_out_gga(0, s(Y), .(0, XS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
INTLIST_IN_GA(.(X, XS), .(s(X), YS)) → INTLIST_IN_GA(XS, YS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
INTLIST_IN_GA(.(X, XS)) → INTLIST_IN_GA(XS)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
INT_IN_GGA(0, s(Y), .(0, XS)) → INT_IN_GGA(s(0), s(Y), XS)
INT_IN_GGA(s(X), s(Y), XS) → INT_IN_GGA(X, Y, ZS)
int_in_gga(0, 0, .(0, [])) → int_out_gga(0, 0, .(0, []))
int_in_gga(0, s(Y), .(0, XS)) → U2_gga(Y, XS, int_in_gga(s(0), s(Y), XS))
int_in_gga(s(X), 0, []) → int_out_gga(s(X), 0, [])
int_in_gga(s(X), s(Y), XS) → U3_gga(X, Y, XS, int_in_gga(X, Y, ZS))
U3_gga(X, Y, XS, int_out_gga(X, Y, ZS)) → U4_gga(X, Y, XS, intlist_in_ga(ZS, XS))
intlist_in_ga([], []) → intlist_out_ga([], [])
intlist_in_ga(.(X, XS), .(s(X), YS)) → U1_ga(X, XS, YS, intlist_in_ga(XS, YS))
U1_ga(X, XS, YS, intlist_out_ga(XS, YS)) → intlist_out_ga(.(X, XS), .(s(X), YS))
U4_gga(X, Y, XS, intlist_out_ga(ZS, XS)) → int_out_gga(s(X), s(Y), XS)
U2_gga(Y, XS, int_out_gga(s(0), s(Y), XS)) → int_out_gga(0, s(Y), .(0, XS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
INT_IN_GGA(0, s(Y), .(0, XS)) → INT_IN_GGA(s(0), s(Y), XS)
INT_IN_GGA(s(X), s(Y), XS) → INT_IN_GGA(X, Y, ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
INT_IN_GGA(0, s(Y)) → INT_IN_GGA(s(0), s(Y))
INT_IN_GGA(s(X), s(Y)) → INT_IN_GGA(X, Y)
From the DPs we obtained the following set of size-change graphs: